/* 
通过Proxy+Reflect实现对象的数据劫持
*/

// 被代理的目标对象
const target = {
  name: '小浪',
  age: 22,
}

// 包含n个监视回调的处理器对象
const handler = {
  get(target, key, receiver) {
      console.log(`获取对象属性${key}值`)
      return Reflect.get(target, key, receiver)
  },
  set(target, key, value, receiver) {
      console.log(`设置对象属性${key}值`)
      return Reflect.set(target, key, value, receiver)
  },
  deleteProperty(target, key) {
      console.log(`删除对象属性${key}值`)
      return Reflect.deleteProperty(target, key)
  },
}

// 创建proxy代理对象
const proxy = new Proxy(target, handler)

// 通过proxy读取属性
console.log(proxy.age)

// 通过proxy修改属性
proxy.age = 21
// 通过proxy添加属性
proxy.sex = '男'

// 通过proxy删除属性
delete proxy.age